<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
	xmlns="http://www.w3.org/1999/xhtml"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:ccts="urn:un:unece:uncefact:documentation:standard:CoreComponentsTechnicalSpecification:2"
	xmlns:ram="urn:un:unece:uncefact:data:draft:ReusableAggregateBusinessInformationEntity:1"
	xmlns:xf="http://www.w3.org/2002/xforms"
	xmlns:ev="http://www.w3.org/2001/xml-events"
	
	exclude-result-prefixes="xsd xsl"> 
	
	<xsl:import href="global-vars.xsl" />
	<xsl:import href="global-templates.xsl" />
	
	<xsl:output media-type="application/xhtml+xml" method="xml" 
		encoding="UTF-8" version="1.0" indent="yes" omit-xml-declaration="no"/>
	
	<xsl:variable name="path">/xsd:simpleType/xsd:restriction/xsd:enumeration</xsl:variable>
	
	<xsl:template name="GetTextTypeAttributes">
		<xsl:element name="attributes" xmlns="">
			<xsl:element name="attribute">languageCode</xsl:element>
		</xsl:element>
	</xsl:template>
	
	<xsl:template name="TextTypeInstancePart">
		<xsl:param name="name" />
		<xsl:param name="prefix" />
		
		<xsl:choose>
			<xsl:when test="namespace-uri-for-prefix( $prefix, . ) != $global.ns.target">
				<xsl:element name="{$prefix}:{$name}">
					<xsl:attribute name="languageCode">eng</xsl:attribute>
				</xsl:element>
			</xsl:when>
			<xsl:otherwise>
				<xsl:element name="{$name}" namespace="{$global.ns.target}">
					<xsl:attribute name="languageCode">eng</xsl:attribute>
				</xsl:element>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>
	
	<xsl:template name="TextTypeBinding">
		<xsl:param name="bbie" />
		<xsl:param name="bbie.ref" />
		<xsl:param name="bbie.schema" />
		
		<xsl:variable name="attribute.info">
			<xsl:call-template name="GetAttributeInfo">
				<xsl:with-param name="type" select="$bbie"/>
				<xsl:with-param name="type.schema" select="$bbie.schema"/>
				<xsl:with-param name="type.attribute" select="'languageCode'"/>
			</xsl:call-template>
		</xsl:variable>
		
		<xsl:element name="xf:bind">
			<xsl:attribute name="nodeset"><xsl:value-of select="$bbie.ref" />/@languageCode</xsl:attribute>
			<xsl:attribute name="type">
				<xsl:value-of select="$attribute.info/attribute/@type"/>
			</xsl:attribute>
		</xsl:element>
	</xsl:template>
	
	<xsl:template name="GenerateTextTypeElements">
		<xsl:param name="element.ref" required="yes" />
		<xsl:param name="element.den" required="yes" />
		<xsl:param name="element.type" required="yes" />
		<xsl:param name="element.type.schema" required="yes" />
		<xsl:param name="businessterm" required="yes" />
		
		<xsl:variable name="case.id" select="generate-id()"></xsl:variable>
		
		<xsl:if test="if( not( contains( $element.type, ':') ) )
			then error( QName( 'E', 'E' ), concat( 'NameType.xsl : GenerateNameTypeElements : type must contain a prefix - value = ', $element.type ) )
			else true()" />
		
		<xsl:variable name="attribute.info">
			<xsl:call-template name="GetAttributeInfo">
				<xsl:with-param name="type" select="$element.type"/>
				<xsl:with-param name="type.schema" select="$element.type.schema"/>
				<xsl:with-param name="type.attribute" >languageCode</xsl:with-param>
			</xsl:call-template>
		</xsl:variable>
		
		<xsl:element name="div">
			<xsl:attribute name="class" select="replace( replace( $element.den, ' ', '' ), '\.', '__' )"/>

			<xsl:element name="xf:switch">
				<xsl:element name="xf:case">
					<xsl:attribute name="id"><xsl:value-of select="$case.id"/>_simple</xsl:attribute>
					<xsl:element name="xf:input">
						<xsl:attribute name="ref"><xsl:value-of select="$element.ref"/></xsl:attribute>
						<xsl:element name="xf:label"><xsl:value-of select="$businessterm" /></xsl:element>
					</xsl:element>
					<xsl:element name="xf:trigger">
						<xsl:element name="xf:label">Show language</xsl:element>
						<xsl:element name="xf:action">
							<xsl:attribute name="ev:event">DOMActivate</xsl:attribute>
							<xsl:element name="xf:toggle">
								<xsl:attribute name="case"><xsl:value-of select="$case.id"/>_detailed</xsl:attribute>
							</xsl:element>
						</xsl:element>
					</xsl:element>
				</xsl:element>
				<xsl:element name="xf:case">
					<xsl:attribute name="id"><xsl:value-of select="$case.id"/>_detailed</xsl:attribute>
					<xsl:element name="xf:input">
						<xsl:attribute name="ref"><xsl:value-of select="$element.ref"/></xsl:attribute>
						<xsl:element name="xf:label"><xsl:value-of select="$businessterm" /></xsl:element>
					</xsl:element>
					<xsl:element name="xf:select1">
						<xsl:attribute name="ref"><xsl:value-of select="$element.ref" />/@languageCode</xsl:attribute>
						<xsl:element name="xf:label">Language:</xsl:element>
						<xsl:element name="xf:itemset">
							<xsl:attribute name="nodeset">instance( '<xsl:value-of 
								select="concat( 'instance.codes.languageCode.'
								, $attribute.info/attribute/@type )" />' )<xsl:value-of select="$path"/></xsl:attribute>
							<xsl:element name="xf:label">
								<xsl:attribute name="ref">@value</xsl:attribute>
							</xsl:element>
							<xsl:element name="xf:value">
								<xsl:attribute name="ref">@value</xsl:attribute>
							</xsl:element>
						</xsl:element>
					</xsl:element>
					<xsl:element name="xf:trigger">
						<xsl:element name="xf:label">Hide details</xsl:element>
						<xsl:element name="xf:action">
							<xsl:attribute name="ev:event">DOMActivate</xsl:attribute>
							<xsl:element name="xf:toggle">
								<xsl:attribute name="case"><xsl:value-of select="$case.id"/>_simple</xsl:attribute>
							</xsl:element>
						</xsl:element>
					</xsl:element>
				</xsl:element>
			</xsl:element>
		
<!-- 			<xsl:element name="xf:input">
				<xsl:attribute name="ref"><xsl:value-of select="$element.ref" /></xsl:attribute>
				<xsl:element name="xf:label"><xsl:value-of select="$businessterm" /></xsl:element>
			</xsl:element>
			<xsl:element name="xf:select1">
				<xsl:attribute name="ref"><xsl:value-of select="$element.ref" />/@languageCode</xsl:attribute>
				<xsl:element name="xf:label">Language:</xsl:element>
				<xsl:element name="xf:itemset">
					<xsl:attribute name="nodeset">instance( '<xsl:value-of 
						select="concat( 'instance.codes.languageCode.'
						, $attribute.info/attribute/@type )" />' )<xsl:value-of select="$path"/></xsl:attribute>
					<xsl:element name="xf:label">
						<xsl:attribute name="ref">@value</xsl:attribute>
					</xsl:element>
					<xsl:element name="xf:value">
						<xsl:attribute name="ref">@value</xsl:attribute>
					</xsl:element>
				</xsl:element>
			</xsl:element> -->
		</xsl:element>
	</xsl:template>
</xsl:stylesheet>